/*
 * L'PNG v0.0.5
 * jQuery plagin
 * OmegaScorp
 */
(function($){
    $.lpng_options=[];
    $.fn.lpng=function(opt, param){
        if($(this).attr('lpng')!=undefined||opt=='ready'){
            return $(this).lpng_api(opt, param);
        }
        else{
            $(this).lpng_init(opt);
            return '';
        }
    }
    $.fn.lpng_init=function(opt){
        var index=$.lpng_options.length;
        var img=new Image();
        var lpng=$(this);
        img.onload=function(){
            $.lpng_options[index]=$.extend({
                width: img.height,
                height: img.height,
                count: img.width/img.height,
                url: $(this).attr('src'),
                timeout: 100,
                play: true,
                ready: false,
                position: 0
            },opt);
            lpng.attr('lpng', index);
            var options=$.lpng_options[index];
            
            if(lpng.get(0).tagName=='IMG'){
                lpng.after('<div></div>').hide();
                var element=lpng.next();
            }
            else{
                var element=lpng;
            }
            
            element.css({
                'float': 'left',
                'width': options.width+'px',
                'height': options.height+'px',
                'background': 'url('+options.url+')'
            });
            
            time=function(t, f){
                var index=t.attr('lpng');
                var options=$.lpng_options[index];
                if(options.play){
                    if(t.get(0).tagName=='IMG'){
                        element=t.next();
                    }
                    else{
                        element=t;
                    }
                    pos=options.position+options.width;
                    if(pos>=options.count*options.width){
                        pos=0;
                    }
                    if(isNaN(pos)||pos==null){
                        pos=0;
                    }
                    
                    element.css({
                        'background-position': pos+'px'
                    });
                    
                    $.lpng_options[index].position=pos;
                }
                if(options.timeout){
                    setTimeout(function(){
                        time(t);
                    },options.timeout);
                }
            }
            
            $.lpng_options[index].ready=true;
            t=lpng;
            if(options.timeout){
                time(t);
            }
            $(this).dequeue();
        }
        img.src=opt!=undefined&&opt.url!=undefined?opt.url:$(this).attr('src');
    }
    $.fn.lpng_api=function(opt, param){
        var index=$(this).attr('lpng');
        switch(opt){
            case 'play': $.lpng_options[index].play=true; break;
            case 'stop': $.lpng_options[index].play=false; break;
            case 'hide': $.lpng_options[index].play=false; $(this).get(0).tagName=='IMG'?$(this).next().hide():$(this).hide(); break;
            case 'show': $.lpng_options[index].play=true; $(this).get(0).tagName=='IMG'?$(this).next().show():$(this).show(); break;
            case 'ready': return $.lpng_options[index]==undefined?false:$.lpng_options[index]['ready'];
            default: return $.lpng_options[index][opt];
        }
        return '';
    }
})(jQuery);